home *** CD-ROM | disk | FTP | other *** search
/ Programming Windows 95 / Programming Windows 95.iso / code / CHAP20 / PUBMEM.H < prev    next >
Encoding:
C/C++ Source or Header  |  1996-01-01  |  2.1 KB  |  70 lines

  1. //-------------------------------------------------------------------
  2. // C Interface to private allocator
  3. //-------------------------------------------------------------------
  4. #define EXPORT extern "C" __declspec (dllexport)
  5.  
  6. EXPORT LPMALLOC CreateAllocator () ;
  7.  
  8. // {308D0430-1090-11cf-B92A-00AA006238F8}
  9. DEFINE_GUID (CLSID_ALLOCATOR, 
  10.      0x308d0430, 0x1090, 0x11cf, 0xb9, 
  11.      0x2a, 0x0, 0xaa, 0x0, 0x62, 0x38, 0xf8) ;
  12.  
  13. //-------------------------------------------------------------------
  14. // Implementation of allocator interface
  15. //-------------------------------------------------------------------
  16. #undef  INTERFACE
  17. #define INTERFACE DAlloc
  18.  
  19. DECLARE_INTERFACE_ (DAlloc, IMalloc)
  20.      {
  21.      // *** IUnknown methods ***
  22.      STDMETHOD  (QueryInterface) (THIS_ REFIID riid, LPVOID FAR *ppv) ;
  23.      STDMETHOD_ (ULONG, AddRef)  (THIS) ;
  24.      STDMETHOD_ (ULONG, Release) (THIS) ;
  25.  
  26.      // *** IMalloc methods ***
  27.      STDMETHOD_ (void *, Alloc)        (THIS_ ULONG cb) ;
  28.      STDMETHOD_ (void *, Realloc)      (THIS_ void *pv, ULONG cb) ;
  29.      STDMETHOD_ (void,   Free)         (THIS_ void *pv) ;
  30.      STDMETHOD_ (ULONG,  GetSize)      (THIS_ void *pv) ;
  31.      STDMETHOD_ (int,    DidAlloc)     (THIS_ void *pv) ;
  32.      STDMETHOD_ (void,   HeapMinimize) (THIS) ;
  33.  
  34. #ifndef CINTERFACE
  35. public :
  36.      DAlloc () ;
  37.      ~DAlloc () ;
  38.      BOOL Initialize () ;
  39. private :
  40.      ULONG RefCount ;
  41.      HANDLE hHeap ;
  42. #endif
  43.      } ;
  44.  
  45. // Class Factory
  46. #undef  INTERFACE
  47. #define INTERFACE DClassFactory
  48.  
  49. DECLARE_INTERFACE_ (DClassFactory, IClassFactory)
  50.      {
  51.      // *** IUnknown methods ***
  52.      STDMETHOD  (QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) ;
  53.      STDMETHOD_ (ULONG, AddRef)  (THIS) ;
  54.      STDMETHOD_ (ULONG, Release) (THIS) ;
  55.  
  56.      // *** IClassFactory methods ***
  57.      STDMETHOD (CreateInstance) (THIS_ LPUNKNOWN pUnkOuter,
  58.                                  REFIID riid, LPVOID FAR *ppvObject) ;
  59.      STDMETHOD (LockServer)     (THIS_ BOOL fLock) ;
  60.  
  61. #ifndef CINTERFACE
  62. public :
  63.      DClassFactory () ;
  64.      ~DClassFactory () ;
  65. private :
  66.      ULONG RefCount ;
  67. #endif
  68.      } ;
  69.  
  70.